package org.zjt.scala

/**
  *
  * Description: 偏函数   PartialFunction ？
  *
  *
  * 方法的定义规则：
  *
  *     1、定义带有参数的函数时，括号才是必须的。无形参时候，函数可以不带括号，必须无括号调用。
  *     2、PartialFunction 方法返回一个Function对象。
  *     3、当函数没有返回值。可以用结构来表示。结构也可以省去括号。（花括号前无等号）
  *     4、方法可以覆盖操作符。（++、--、！等等）
  *     5、方法调用的简写   a.to(4)  可以谢伟  a to 5。【对象  方法名  参数】
  *     6、可变长度的形参，不是数组，而是序列seq( array:_* )
  *
  *
  *
  * @author juntao.zhang
  *         Date: 2018-06-25 下午9:47
  * @see
  */
class MethodTest {

  private  var num : Int = 0

  /**
    * 偏函数
    * @return
    */
  def method : PartialFunction[String,Unit] = {
    case "zhang" => println("姓")
    case _ => println("未定义")
  }

  /**
    * 得到id函数，省略括号（）
    * @return
    */
  def generateId:Int = {num += 1 ;num }


  val generateId2 = (x:Int) => x + num

}


object MethodTest  {
  private  var num : Int = 0


}

object Main extends App{

}